
package automaton;

import java.util.Set;
import java.util.Map;
import java.util.HashSet;
import java.util.HashMap;

import util.Utils;
import util.Predicate;

/**
 * Estado de un autómata no determinìstico hecho determinístico.
 * 
 * @param <T> tipo de las transiciones
 */
public class NDStateSet<T> implements State {
	
	private final Set<NDState<T>> states;
	
	public NDStateSet(Set<NDState<T>> states) {
		this.states = states;
	}
	
	/**
	 * Indica si es un estado final o de aceptación.
	 */
	public boolean isAcceptor() {
		return Utils.any(states, new Predicate<NDState<T>>() {
			public boolean evaluate(NDState<T> state) {
				return state.isAcceptor();
			}
		});
	}
	
	public Set<NDState<T>> getStates() {
		return this.states;
	}
}
